# 导入matplotlib的pyplot模块，用于绘图
import matplotlib.pyplot as plt
# 导入numpy库，用于处理数组
import numpy as np

# 设置matplotlib的rcParams参数，以便在图表中正确显示中文字符和负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为SimHei，以便支持中文显示
plt.rcParams['axes.unicode_minus'] = False  # 设置负号正常显示

# 定义一个numpy数组x，包含了一系列浮点数，代表各种商品和服务的占比或评分
x = np.array([0.959, 0.951, 0.935, 0.924, 0.893,
              0.892, 0.865, 0.863, 0.860, 0.856,
              0.854, 0.835, 0.826, 0.816, 0.798,
              0.765, 0.763, 0.67])

# 定义一个列表labels，包含了与x数组中数据相对应的标签，即各种商品和服务的名称
labels = ["家政、家教、保姆等生活服务", "飞机票、火车票", "家具", "手机、手机配件",
          "计算机及其配套产品", "汽车用品", "通信充值、游戏充值", "个人护理用品",
          "书报杂志及音像制品", "餐饮、旅游、住宿", "家用电器",
          "食品、饮料、烟酒、保健品", "家庭日杂用品",
          "保险、演出票务",
          "服装、鞋帽、家用纺织品", "数码产品", "其他商品和服务", "工艺品、收藏品"]

# 使用plt.barh函数绘制水平条形图
# 第一个参数range(len(x))是y轴的位置，这里通过生成一个与x数组长度相同的整数序列来设置
# 第二个参数x是条形的长度
# tick_label=labels设置y轴的刻度标签
plt.barh(range(len(x)), x, tick_label=labels)

# 显示图表
plt.show()